isEmpty1(nil) -> true
isEmpty1(cons2(x, xs)) -> false
last1(cons2(x, nil)) -> x
last1(cons2(x, cons2(y, ys))) -> last1(cons2(y, ys))
dropLast1(nil) -> nil
dropLast1(cons2(x, nil)) -> nil
dropLast1(cons2(x, cons2(y, ys))) -> cons2(x, dropLast1(cons2(y, ys)))
append2(nil, ys) -> ys
append2(cons2(x, xs), ys) -> cons2(x, append2(xs, ys))
reverse1(xs) -> rev2(xs, nil)
rev2(xs, ys) -> if4(isEmpty1(xs), dropLast1(xs), append2(ys, last1(xs)), ys)
if4(true, xs, ys, zs) -> zs
if4(false, xs, ys, zs) -> rev2(xs, ys)
↳ QTRS
↳ DependencyPairsProof
isEmpty1(nil) -> true
isEmpty1(cons2(x, xs)) -> false
last1(cons2(x, nil)) -> x
last1(cons2(x, cons2(y, ys))) -> last1(cons2(y, ys))
dropLast1(nil) -> nil
dropLast1(cons2(x, nil)) -> nil
dropLast1(cons2(x, cons2(y, ys))) -> cons2(x, dropLast1(cons2(y, ys)))
append2(nil, ys) -> ys
append2(cons2(x, xs), ys) -> cons2(x, append2(xs, ys))
reverse1(xs) -> rev2(xs, nil)
rev2(xs, ys) -> if4(isEmpty1(xs), dropLast1(xs), append2(ys, last1(xs)), ys)
if4(true, xs, ys, zs) -> zs
if4(false, xs, ys, zs) -> rev2(xs, ys)
REV2(xs, ys) -> DROPLAST1(xs)
REV2(xs, ys) -> ISEMPTY1(xs)
REV2(xs, ys) -> LAST1(xs)
REV2(xs, ys) -> IF4(isEmpty1(xs), dropLast1(xs), append2(ys, last1(xs)), ys)
DROPLAST1(cons2(x, cons2(y, ys))) -> DROPLAST1(cons2(y, ys))
REVERSE1(xs) -> REV2(xs, nil)
IF4(false, xs, ys, zs) -> REV2(xs, ys)
APPEND2(cons2(x, xs), ys) -> APPEND2(xs, ys)
REV2(xs, ys) -> APPEND2(ys, last1(xs))
LAST1(cons2(x, cons2(y, ys))) -> LAST1(cons2(y, ys))
isEmpty1(nil) -> true
isEmpty1(cons2(x, xs)) -> false
last1(cons2(x, nil)) -> x
last1(cons2(x, cons2(y, ys))) -> last1(cons2(y, ys))
dropLast1(nil) -> nil
dropLast1(cons2(x, nil)) -> nil
dropLast1(cons2(x, cons2(y, ys))) -> cons2(x, dropLast1(cons2(y, ys)))
append2(nil, ys) -> ys
append2(cons2(x, xs), ys) -> cons2(x, append2(xs, ys))
reverse1(xs) -> rev2(xs, nil)
rev2(xs, ys) -> if4(isEmpty1(xs), dropLast1(xs), append2(ys, last1(xs)), ys)
if4(true, xs, ys, zs) -> zs
if4(false, xs, ys, zs) -> rev2(xs, ys)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
REV2(xs, ys) -> DROPLAST1(xs)
REV2(xs, ys) -> ISEMPTY1(xs)
REV2(xs, ys) -> LAST1(xs)
REV2(xs, ys) -> IF4(isEmpty1(xs), dropLast1(xs), append2(ys, last1(xs)), ys)
DROPLAST1(cons2(x, cons2(y, ys))) -> DROPLAST1(cons2(y, ys))
REVERSE1(xs) -> REV2(xs, nil)
IF4(false, xs, ys, zs) -> REV2(xs, ys)
APPEND2(cons2(x, xs), ys) -> APPEND2(xs, ys)
REV2(xs, ys) -> APPEND2(ys, last1(xs))
LAST1(cons2(x, cons2(y, ys))) -> LAST1(cons2(y, ys))
isEmpty1(nil) -> true
isEmpty1(cons2(x, xs)) -> false
last1(cons2(x, nil)) -> x
last1(cons2(x, cons2(y, ys))) -> last1(cons2(y, ys))
dropLast1(nil) -> nil
dropLast1(cons2(x, nil)) -> nil
dropLast1(cons2(x, cons2(y, ys))) -> cons2(x, dropLast1(cons2(y, ys)))
append2(nil, ys) -> ys
append2(cons2(x, xs), ys) -> cons2(x, append2(xs, ys))
reverse1(xs) -> rev2(xs, nil)
rev2(xs, ys) -> if4(isEmpty1(xs), dropLast1(xs), append2(ys, last1(xs)), ys)
if4(true, xs, ys, zs) -> zs
if4(false, xs, ys, zs) -> rev2(xs, ys)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
↳ QDP
APPEND2(cons2(x, xs), ys) -> APPEND2(xs, ys)
isEmpty1(nil) -> true
isEmpty1(cons2(x, xs)) -> false
last1(cons2(x, nil)) -> x
last1(cons2(x, cons2(y, ys))) -> last1(cons2(y, ys))
dropLast1(nil) -> nil
dropLast1(cons2(x, nil)) -> nil
dropLast1(cons2(x, cons2(y, ys))) -> cons2(x, dropLast1(cons2(y, ys)))
append2(nil, ys) -> ys
append2(cons2(x, xs), ys) -> cons2(x, append2(xs, ys))
reverse1(xs) -> rev2(xs, nil)
rev2(xs, ys) -> if4(isEmpty1(xs), dropLast1(xs), append2(ys, last1(xs)), ys)
if4(true, xs, ys, zs) -> zs
if4(false, xs, ys, zs) -> rev2(xs, ys)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
APPEND2(cons2(x, xs), ys) -> APPEND2(xs, ys)
POL( APPEND2(x1, x2) ) = x1 + 3
POL( cons2(x1, x2) ) = 2x2 + 1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
↳ QDP
isEmpty1(nil) -> true
isEmpty1(cons2(x, xs)) -> false
last1(cons2(x, nil)) -> x
last1(cons2(x, cons2(y, ys))) -> last1(cons2(y, ys))
dropLast1(nil) -> nil
dropLast1(cons2(x, nil)) -> nil
dropLast1(cons2(x, cons2(y, ys))) -> cons2(x, dropLast1(cons2(y, ys)))
append2(nil, ys) -> ys
append2(cons2(x, xs), ys) -> cons2(x, append2(xs, ys))
reverse1(xs) -> rev2(xs, nil)
rev2(xs, ys) -> if4(isEmpty1(xs), dropLast1(xs), append2(ys, last1(xs)), ys)
if4(true, xs, ys, zs) -> zs
if4(false, xs, ys, zs) -> rev2(xs, ys)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
DROPLAST1(cons2(x, cons2(y, ys))) -> DROPLAST1(cons2(y, ys))
isEmpty1(nil) -> true
isEmpty1(cons2(x, xs)) -> false
last1(cons2(x, nil)) -> x
last1(cons2(x, cons2(y, ys))) -> last1(cons2(y, ys))
dropLast1(nil) -> nil
dropLast1(cons2(x, nil)) -> nil
dropLast1(cons2(x, cons2(y, ys))) -> cons2(x, dropLast1(cons2(y, ys)))
append2(nil, ys) -> ys
append2(cons2(x, xs), ys) -> cons2(x, append2(xs, ys))
reverse1(xs) -> rev2(xs, nil)
rev2(xs, ys) -> if4(isEmpty1(xs), dropLast1(xs), append2(ys, last1(xs)), ys)
if4(true, xs, ys, zs) -> zs
if4(false, xs, ys, zs) -> rev2(xs, ys)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
DROPLAST1(cons2(x, cons2(y, ys))) -> DROPLAST1(cons2(y, ys))
POL( cons2(x1, x2) ) = 3x1 + 2x2 + 3
POL( DROPLAST1(x1) ) = max{0, 3x1 - 1}
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
isEmpty1(nil) -> true
isEmpty1(cons2(x, xs)) -> false
last1(cons2(x, nil)) -> x
last1(cons2(x, cons2(y, ys))) -> last1(cons2(y, ys))
dropLast1(nil) -> nil
dropLast1(cons2(x, nil)) -> nil
dropLast1(cons2(x, cons2(y, ys))) -> cons2(x, dropLast1(cons2(y, ys)))
append2(nil, ys) -> ys
append2(cons2(x, xs), ys) -> cons2(x, append2(xs, ys))
reverse1(xs) -> rev2(xs, nil)
rev2(xs, ys) -> if4(isEmpty1(xs), dropLast1(xs), append2(ys, last1(xs)), ys)
if4(true, xs, ys, zs) -> zs
if4(false, xs, ys, zs) -> rev2(xs, ys)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
LAST1(cons2(x, cons2(y, ys))) -> LAST1(cons2(y, ys))
isEmpty1(nil) -> true
isEmpty1(cons2(x, xs)) -> false
last1(cons2(x, nil)) -> x
last1(cons2(x, cons2(y, ys))) -> last1(cons2(y, ys))
dropLast1(nil) -> nil
dropLast1(cons2(x, nil)) -> nil
dropLast1(cons2(x, cons2(y, ys))) -> cons2(x, dropLast1(cons2(y, ys)))
append2(nil, ys) -> ys
append2(cons2(x, xs), ys) -> cons2(x, append2(xs, ys))
reverse1(xs) -> rev2(xs, nil)
rev2(xs, ys) -> if4(isEmpty1(xs), dropLast1(xs), append2(ys, last1(xs)), ys)
if4(true, xs, ys, zs) -> zs
if4(false, xs, ys, zs) -> rev2(xs, ys)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
LAST1(cons2(x, cons2(y, ys))) -> LAST1(cons2(y, ys))
POL( LAST1(x1) ) = max{0, 3x1 - 1}
POL( cons2(x1, x2) ) = 3x1 + 2x2 + 3
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
isEmpty1(nil) -> true
isEmpty1(cons2(x, xs)) -> false
last1(cons2(x, nil)) -> x
last1(cons2(x, cons2(y, ys))) -> last1(cons2(y, ys))
dropLast1(nil) -> nil
dropLast1(cons2(x, nil)) -> nil
dropLast1(cons2(x, cons2(y, ys))) -> cons2(x, dropLast1(cons2(y, ys)))
append2(nil, ys) -> ys
append2(cons2(x, xs), ys) -> cons2(x, append2(xs, ys))
reverse1(xs) -> rev2(xs, nil)
rev2(xs, ys) -> if4(isEmpty1(xs), dropLast1(xs), append2(ys, last1(xs)), ys)
if4(true, xs, ys, zs) -> zs
if4(false, xs, ys, zs) -> rev2(xs, ys)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
REV2(xs, ys) -> IF4(isEmpty1(xs), dropLast1(xs), append2(ys, last1(xs)), ys)
IF4(false, xs, ys, zs) -> REV2(xs, ys)
isEmpty1(nil) -> true
isEmpty1(cons2(x, xs)) -> false
last1(cons2(x, nil)) -> x
last1(cons2(x, cons2(y, ys))) -> last1(cons2(y, ys))
dropLast1(nil) -> nil
dropLast1(cons2(x, nil)) -> nil
dropLast1(cons2(x, cons2(y, ys))) -> cons2(x, dropLast1(cons2(y, ys)))
append2(nil, ys) -> ys
append2(cons2(x, xs), ys) -> cons2(x, append2(xs, ys))
reverse1(xs) -> rev2(xs, nil)
rev2(xs, ys) -> if4(isEmpty1(xs), dropLast1(xs), append2(ys, last1(xs)), ys)
if4(true, xs, ys, zs) -> zs
if4(false, xs, ys, zs) -> rev2(xs, ys)